1. Field of the Invention
The present invention generally relates to cloud messaging services and, more particularly, to manners of adaptively and dynamically determining optimal levels and/or manners of compression of cloud-based messages to reduce overall resource usage (e.g., CPU, network bandwidth, persistent storage usage) to limit customer costs while maintaining quality of service (QoS) to meet related service level agreements (SLAs).
2. Relevant Background
Message-oriented Middleware (MOM) and related services are critical in distributed systems such as in business applications. Generally, MOM enables distributed applications to conveniently send and receive messages among each other to significantly simplify the design of complex business applications. For instance, MOM allows application modules to be distributed over heterogeneous platforms and reduces the complexity of developing applications that span multiple operating systems and network protocols. MOM can provide software elements that reside in all communicating components of a client/server architecture and typically supports asynchronous calls between the client and server applications. Furthermore, MOM can reduce the involvement of application developers with the complexity of the master-slave nature of the client/server mechanism.
MOM is increasingly being deployed in the context of cloud computing (e.g., in “the cloud”), namely, where computing resources (e.g., hardware, software) are delivered as services over one or more networks (e.g., the Internet). Cloud computing often entrusts remote services with a user's data, software and computation. For instance, end users may access cloud-based applications through a web browser or the like (e.g., light-weight desktop client or mobile app) while the business software and user's data are stored on servers at one or more remote locations. Cloud computing can allow companies to limit upfront infrastructure costs, get their applications up and running faster with improved manageability and less maintenance, and enable their information technology (IT) personnel to more rapidly adjust resources to meet fluctuating and unpredictable business demand.
FIG. 1 presents a simplified illustration of how MOM may be implemented in a cloud-based computing environment 10. Generally, the environment 10 may include at least one “cloud” 14 (e.g., interconnected collection of infrastructure, applications, storage, processing, other services, etc.) that may be accessed and utilized by a plurality of customers or clients (e.g., desktop or laptop computers, servers, thin clients, smartphones, tablets, other mobile devices, etc.) for use of the cloud services through applications such as web browsers, web-based interfaces, application programming interfaces (API), or the like. As an example in one arrangement, the client applications may include a message producer 18 and a message recipient or consumer 22. The message producer 18 may be configured to produce and send a message (e.g., Java® message) over one or more networks (e.g., the Internet) to a message service provider 26 (e.g., Oracle's WebLogic® and GlassFish® servers or other cloud-deployed MOM providers) in the cloud 14, where the message consumer 22 is configured to appropriately retrieve the message from the message service provider 26.
In a “point-to-point” mode of MOM, for instance, a first customer (e.g., a first hospital or doctor's office) may need to send medical imaging data or the like to a second customer (e.g., another hospital or doctor's office). In this regard, a client application (the message producer 18) of the first customer may serve to encapsulate the medical image data in a message and then transmit the message to the message service provider 26 which queues, stores (e.g., in volatile memory, not shown) and backs up (e.g., in persistent or non-volatile storage 30) the message for retrieval by a client application (the message consumer 22) of the second customer. In a “publish-and-subscribe” mode of MOM, the message producer 18 may be a publisher that publishes a topic for retrieval by a plurality of message consumers 22 (e.g., which may be equated to the publisher multicasting messages to multiple consumers). In any event, each message consumer 22 may appropriately register with the message service provider 26 to receive callbacks from the message service provider 26 upon messages for the message consumer 22 being queued at the message service provider 26. In this regard, the message service provider 26 acts as a broker between the message producer 18 and message consumer 22 by ensuring the security and integrity of transactions by way of persistent storage.
Cloud-based messaging services may be aggregated for large numbers of message producers and consumers 18, 22 (e.g., client applications) and the cost may be amortized and shared by the various customers. In such a cloud deployment, the more resources that a client application uses, the higher are the costs that will be incurred. Some cloud services (e.g., Infrastructure as a Service (IaaS), Platform as a Service (PaaS)) dynamically allocate (e.g., add or remove) resources based on customers' actual load. For instance, if the message service provider's 26 loading (e.g., utilization) is higher, more CPUs may need to be allocated to maintain QoS (e.g., response time) to meet a particular SLA. On the other hand, CPUs may be freed in response to reduced work load. Other resources such as persistent storage and network bandwidth may be similarly dynamically allocated. The resulting charges (from a cloud customer's view) and the cost (from the cloud provider's view) may be based on the actual resource usage.